package pro.shushi.pamirs.hr.api.pmodel;

import pro.shushi.pamirs.boot.base.ux.annotation.field.UxWidget;
import pro.shushi.pamirs.boot.base.ux.annotation.view.UxDetail;
import pro.shushi.pamirs.boot.base.ux.annotation.view.UxForm;
import pro.shushi.pamirs.boot.base.ux.annotation.view.UxTable;
import pro.shushi.pamirs.boot.base.ux.annotation.view.UxTableSearch;
import pro.shushi.pamirs.hr.api.model.org.Department;
import pro.shushi.pamirs.meta.annotation.Field;
import pro.shushi.pamirs.meta.annotation.Model;
import pro.shushi.pamirs.meta.enmu.ModelTypeEnum;

// 模型中UX开头的注解(UxForm/UxTable/UxDetail等)可以不用写，都可在设计器中进行可视化配置; 代码里面写这些注解是为了默认页面的交互
@Model.model(DepartmentProxy.MODEL_MODEL)
@Model(displayName = "部门代理模型")
@Model.Advanced(type = ModelTypeEnum.PROXY)
public class DepartmentProxy extends Department {

    public static final String MODEL_MODEL = "hr.simple.DepartmentProxy";

    /**
     *
     * 这里写了主要是为了默认页面的交互，即岗位这个字段不显示在列表/表单/详情中，仅作为查询条件
     * 该示例说明：
     * 1、通过一个不在部门表中的字段(岗位)去查询部门列表；
     * 2、这里增加的字段positionName(岗位)主要是为了能把所属条件传到后端作为查询条件
     *
     * 非存储字段搜索：https://doc.oinone.top/dai-ma-shi-jian/5592.html
     */
    @UxTableSearch.FieldWidget(@UxWidget())
    @UxForm.FieldWidget(@UxWidget(invisible = "true"))
    @UxDetail.FieldWidget(@UxWidget(invisible = "true"))
    @UxTable.FieldWidget(@UxWidget(invisible = "true"))
    @Field.String
    @Field(displayName = "岗位名称", summary = "接收页面传参，模拟通过岗位查部门")
    private String positionName;

    @Field.Integer
    @Field(displayName = "部门总人数(含离职)", summary = "数据统计分析透传给页面", invisible = true)
    private Long staffCount;

}
